package com.tedu.day02;

/**
 *
 *                      普通类     抽象类       接口类
 *                        【关系】      【特点】
 *           类与类        继承      只能单继承、可多层继承【从祖宗类开始继承】
 *           类与抽象类     继承      可以单继承、不可以多继承
 *           抽象类与抽象类  继承      只能单继承、可多层继承
 *           类与接口       实现      可以单继承，也可以多实现
 *                                  并且继承同时实现多个接口
 *           接口与接口     继承      可以单继承，可以多继承【一个子类可以继承多个父类】
 */
/*
*   作业: 1.抽象类与接口区别和关系?  简答
*       关系:    1.都可以被继承，都不能被实例化
*               2.都可以包含方法声明
*               3.派生类必须实现未实现的方法
*        区别: 1.抽象类可以有构造方法，普通成员变量，可以包含静态方法；
*                接口不能有构造方法，没有普通成员变量，不能包含静态方法
*             2.接口只有定义，不能有方法的实现；
*               抽象类可以有定义与实现，方法可以在抽象类中实现
*             3.继承抽象类的关键字--extends; 实现接口关键字--implements
*             4. 一个类可以实现多个接口，但只能继承一个抽象类；
*                接口可以被多重实现，抽象类只能被单一继承
*
*                抽象类                           接口
* 定义:      用于定义类之间的共性，                   完全抽象的类型，
*           可以包含具体方法和抽象方法            只定义行为范围，不提供实现
* 关键字:     abstract class                         interface
* 方法:     可以包含具体方法和抽象方法             只能包含抽象方法，可以有默认方法和静态的方法
* 成员变量:     可以包含实例变量                  只能包含public  static  final常量
*              变量可以私有化                           不能被私有化
* 构造方法:   可以有构造方法用于初始化类的状态        不能有构造方法，因为接口不能实例化
* 继承和实现:  一个类只能继承一个抽象类                   一个类可以实现多个接口
*            子类可以选择实现抽象类中的部分方法           类必须实现接口中的所有方法
*
 */
//5.接口与接口    继承  可以单继承，可以多继承
   interface Loo{}   interface Foo{}
    interface Voo extends Loo,Foo{}

//4.类与接口: 实现  ---可以单继承，也可以多实现
   /* interface Loo{}   interface Foo{}
    *class Joo{}
    *class Voo extends Joo implements Loo,Foo{}
    */

//3.抽象类与抽象类: 继承--只能单继承、可多层继承
  /* abstract class Loo{}
   * abstract class Voo extends Loo{}
   *abstract class Uoo extends Voo{}
   */

//2.类与抽象类: 继承---可以单继承、不可以多继承
   /* abstract class Uoo{} abstract class Voo{}
    *class Loo extends Uoo,Voo{}
    */

//1.类与类: 继承---单继承
   /*class Uoo{}
    *class Loo extends Uoo{}
    *class Voo extends Loo{}
    */


public class 关系 {
}
